/**
 * 绘制矩形
 * 参数：cxt、x坐标、y坐标、宽度、高度、圆角、颜色
 */
export const fillRoundRect = function(cxt, x, y, width, height, radius, /*optional*/ fillColor) {
	//圆的直径必然要小于矩形的宽高
	if (2 * radius > width || 2 * radius > height) {
		return false;
	}
	cxt.save();
	cxt.translate(x, y);
	//绘制圆角矩形的各个边
	drawRoundRectPath(cxt, width, height, radius);
	cxt.fillStyle = fillColor || '#000'; //若是给定了值就用给定的值否则给予默认值
	cxt.fill();
	cxt.restore();
}

function drawRoundRectPath(cxt, width, height, radius) {
	cxt.beginPath(0);
	//从右下角顺时针绘制，弧度从0到1/2PI
	cxt.arc(width - radius, height - radius, radius, 0, Math.PI / 2);
	//矩形下边线
	cxt.lineTo(radius, height);
	//左下角圆弧，弧度从1/2PI到PI
	cxt.arc(radius, height - radius, radius, Math.PI / 2, Math.PI);
	//矩形左边线
	cxt.lineTo(0, radius);
	//左上角圆弧，弧度从PI到3/2PI
	cxt.arc(radius, radius, radius, Math.PI, (Math.PI * 3) / 2);
	//上边线
	cxt.lineTo(width - radius, 0);
	//右上角圆弧
	cxt.arc(width - radius, radius, radius, (Math.PI * 3) / 2, Math.PI * 2);
	//右边线
	cxt.lineTo(width, height - radius);
	cxt.closePath();
}

/**
 * 绘制圆形头像
 * 参数：cxt、图标路径、x坐标、y坐标、宽度、高度
 */
export const drawCircular function(ctx, url, x, y, width, height) {
	//画圆形头像
	var avatarurl_width = width;
	var avatarurl_heigth = height;
	var avatarurl_x = x;
	var avatarurl_y = y;
	ctx.save();
	ctx.beginPath();
	ctx.arc(avatarurl_width / 2 + avatarurl_x, avatarurl_heigth / 2 + avatarurl_y, avatarurl_width / 2, 0, Math.PI * 2, false);
	ctx.clip();
	ctx.drawImage(url, avatarurl_x, avatarurl_y, avatarurl_width, avatarurl_heigth);
	ctx.restore();
}

/*
 * 绘制图片cover
 * t:c.getContext("2d");
 * e:document.getElementById("id");图片id
 * i:绘制图片宽度
 * a:绘制图片高度
 * s:x坐标
 * o:y坐标
 */
export const drawImgCover = function(t, e, i, a, s, o) {
	if (e.width / e.height >= i / a) {
		var r = e.height,
		n = Math.ceil(i / a * r);
		t.drawImage(e, (e.width - n) / 2, 0, n, e.height, s, o, i, a)
	} else {
		var c = e.width,
		l = Math.ceil(a / i * c);
		t.drawImage(e, 0, (e.height - l) / 2, e.width, l, s, o, i, a)
	}
}

/*
 * 文本自定义换行
 * family = " 'PingFang SC',tahoma,arial,'helvetica neue','hiragino sans gb','microsoft yahei',sans-serif";
 * var options = {
				font:"22px" + family,  字体大小
				ctx:ctx,          uni.createCanvasContext('firstCanvas')
				word:"文字",      文字
				maxWidth:750,     最大宽度
				maxLine:2,        最大行数
				x:100,            x坐标
				y:100,            y坐标
				l_h:40            行高
			}
 * callback 自定义函数
 */
export const dealWords = function(options,callback) {
	options.ctx.font = options.font;//设置字体
	callback && callback();
	var allRow = Math.ceil(options.ctx.measureText(options.word).width / options.maxWidth);//实际总共能分多少行
	var count = allRow >= options.maxLine ? options.maxLine : allRow;//实际能分多少行与设置的最大显示行数比，谁小就用谁做循环次数
		
	var endPos = 0;//当前字符串的截断点
	for (var j = 0; j < count; j++) {
		var nowStr = options.word.slice(endPos);//当前剩余的字符串
		var rowWid = 0;//每一行当前宽度    
		if (options.ctx.measureText(nowStr).width > options.maxWidth) {//如果当前的字符串宽度大于最大宽度，然后开始截取
			for (var m = 0; m < nowStr.length; m++) {
				rowWid += options.ctx.measureText(nowStr[m]).width;//当前字符串总宽度
				if (rowWid > options.maxWidth) {                        
					if (j === options.maxLine - 1) { //如果是最后一行
						options.ctx.fillText(nowStr.slice(0, m - 1) + '...', options.x, options.y + (j + 1) * options.l_h);    //(j+1)*18这是每一行的高度        
					} else {
						options.ctx.fillText(nowStr.slice(0, m), options.x, options.y + (j + 1) * options.l_h);
					}
					endPos += m;//下次截断点
					break;
				}
			}
		} else {//如果当前的字符串宽度小于最大宽度就直接输出
			options.ctx.fillText(nowStr.slice(0), options.x, options.y + (j + 1) * options.l_h);
		}
	}
}


//绘制圆形头像多行文字实例
//canvasFlag:false,
//cvsW:300,
//height:300,
// <image :src="firstCanvas" style="width: 300px;height: 300px;" v-if="canvasFlag"></image>
// <canvas class="ins-card-canvas" :style="{width: cvsW + 'px',height: cvsH + 'px'}"   canvas-id="firstCanvas" id="firstCanvas"></canvas>
// //js
// async mycanvas() {
// 	uni.showLoading({
// 		title: '海报生成中'
// 	});
// 	const cvsW = this.cvsW;
// 	const cvsH = this.cvsH;
// 	const logo_w = 100;
// 	const family = " 'PingFang SC',tahoma,arial,'helvetica neue','hiragino sans gb','microsoft yahei',sans-serif";
// 	const ctx = uni.createCanvasContext('firstCanvas');
// 	_this.fillRoundRect(ctx,0,0,cvsW,cvsH,20,"red");
// 	_this.logo = await _this.getImageInfo('http://api.yoronglife.com//uploads/attach/2020/10/20201020/7f0ecf34d9408f7fc3b789894483ab75.jpg');
// 	if(_this.logo.path){
// 		_this.drawCircular(ctx, _this.logo.path, (cvsW-logo_w)/2, 30, logo_w, logo_w);
// 		ctx.setFillStyle('#ffffff')
// 		var options = {
// 			font:"20px"+family,
// 			ctx:ctx,
// 			word:_this.content,
// 			maxWidth:260,
// 			maxLine:3,
// 			x:20,
// 			y:150,
// 			l_h:40
// 		}
// 		_this.dealWords(options)
// 		ctx.draw(false, function() {
// 			uni.canvasToTempFilePath({
// 				// x: 0,
// 				// y: 0,
// 				width: cvsW,
// 				height: cvsH,
// 				// destWidth: uni.getSystemInfoSync().windowWidth, //防止图片模糊
// 				// destHeight: uni.getSystemInfoSync().windowHeight,
// 				canvasId: 'firstCanvas',
// 				success(res) {
// 					uni.hideLoading();
// 					_this.firstCanvas = res.tempFilePath;
// 					_this.canvasFlag = true;
// 				}
// 			})
// 		}, 500)
// 	}else{
// 		uni.hideLoading();
// 		uni.showToast({
// 			title: '海报制作失败，图片下载失败',
// 			icon: 'none'
// 		});
// 	}
// }
//CSS
// .ins-card-canvas {
// 	width: 300rpx;
// 	height: 300rpx;
// 	position: fixed;
// 	top: -10000rpx;
// 	left: 0rpx;
// }